#ifndef CUFFTDX_FFT_18_FP32_FWD_PTX_HPP
#define CUFFTDX_FFT_18_FP32_FWD_PTX_HPP



template<> __forceinline__ __device__ void cufftdx_private_function<4, float, 1>(cufftdx::detail::complex<float> *rmem, unsigned smem){

asm volatile (R"({
.reg .f32 f<381>;
.reg .b64 rd<2>;
add.f32 f73, %52, %68;
add.f32 f74, %36, f73;
add.f32 f75, %53, %69;
add.f32 f76, %37, f75;
mul.f32 f77, f73, 0f3F000000;
sub.f32 f78, %36, f77;
sub.f32 f79, %53, %69;
mul.f32 f80, f79, 0f3F5DB3D7;
add.f32 f81, f80, f78;
sub.f32 f82, f78, f80;
mul.f32 f83, f75, 0f3F000000;
sub.f32 f84, %37, f83;
sub.f32 f85, %52, %68;
mul.f32 f86, f85, 0f3F5DB3D7;
sub.f32 f87, f84, f86;
add.f32 f88, f86, f84;
add.f32 f89, %57, %73;
add.f32 f90, %41, f89;
add.f32 f91, %59, %75;
add.f32 f92, %43, f91;
mul.f32 f93, f89, 0f3F000000;
sub.f32 f94, %41, f93;
sub.f32 f95, %59, %75;
mul.f32 f96, f95, 0f3F5DB3D7;
add.f32 f97, f96, f94;
sub.f32 f98, f94, f96;
mul.f32 f99, f91, 0f3F000000;
sub.f32 f100, %43, f99;
sub.f32 f101, %57, %73;
mul.f32 f102, f101, 0f3F5DB3D7;
sub.f32 f103, f100, f102;
add.f32 f104, f102, f100;
add.f32 f105, %62, %78;
add.f32 f106, %46, f105;
add.f32 f107, %64, %80;
add.f32 f108, %48, f107;
mul.f32 f109, f105, 0f3F000000;
sub.f32 f110, %46, f109;
sub.f32 f111, %64, %80;
mul.f32 f112, f111, 0f3F5DB3D7;
add.f32 f113, f112, f110;
sub.f32 f114, f110, f112;
mul.f32 f115, f107, 0f3F000000;
sub.f32 f116, %48, f115;
sub.f32 f117, %62, %78;
mul.f32 f118, f117, 0f3F5DB3D7;
sub.f32 f119, f116, f118;
add.f32 f120, f118, f116;
mul.f32 f121, f97, 0f3F441B7D;
mul.f32 f122, f103, 0fBF248DBB;
sub.f32 f123, f121, f122;
mul.f32 f124, f103, 0f3F441B7D;
fma.rn.f32 f125, f97, 0fBF248DBB, f124;
mul.f32 f126, f113, 0f3E31D0D4;
mul.f32 f127, f119, 0fBF7C1C5C;
sub.f32 f128, f126, f127;
mul.f32 f129, f119, 0f3E31D0D4;
fma.rn.f32 f130, f113, 0fBF7C1C5C, f129;
mul.f32 f131, f98, 0f3E31D0D4;
mul.f32 f132, f104, 0fBF7C1C5C;
sub.f32 f133, f131, f132;
mul.f32 f134, f104, 0f3E31D0D4;
fma.rn.f32 f135, f98, 0fBF7C1C5C, f134;
mul.f32 f136, f114, 0fBF708FB2;
mul.f32 f137, f120, 0fBEAF1D44;
sub.f32 f138, f136, f137;
mul.f32 f139, f120, 0fBF708FB2;
fma.rn.f32 f140, f114, 0fBEAF1D44, f139;
add.f32 f141, f90, f106;
add.f32 f142, f74, f141;
add.f32 f143, f92, f108;
add.f32 f144, f76, f143;
mul.f32 f145, f141, 0f3F000000;
sub.f32 f146, f74, f145;
sub.f32 f147, f92, f108;
mul.f32 f148, f147, 0f3F5DB3D7;
add.f32 f149, f148, f146;
sub.f32 f150, f146, f148;
mul.f32 f151, f143, 0f3F000000;
sub.f32 f152, f76, f151;
sub.f32 f153, f90, f106;
mul.f32 f154, f153, 0f3F5DB3D7;
sub.f32 f155, f152, f154;
add.f32 f156, f154, f152;
add.f32 f157, f123, f128;
add.f32 f158, f81, f157;
add.f32 f159, f125, f130;
add.f32 f160, f87, f159;
mul.f32 f161, f157, 0f3F000000;
sub.f32 f162, f81, f161;
sub.f32 f163, f125, f130;
mul.f32 f164, f163, 0f3F5DB3D7;
add.f32 f165, f164, f162;
sub.f32 f166, f162, f164;
mul.f32 f167, f159, 0f3F000000;
sub.f32 f168, f87, f167;
sub.f32 f169, f123, f128;
mul.f32 f170, f169, 0f3F5DB3D7;
sub.f32 f171, f168, f170;
add.f32 f172, f170, f168;
add.f32 f173, f133, f138;
add.f32 f174, f82, f173;
add.f32 f175, f135, f140;
add.f32 f176, f88, f175;
mul.f32 f177, f173, 0f3F000000;
sub.f32 f178, f82, f177;
sub.f32 f179, f135, f140;
mul.f32 f180, f179, 0f3F5DB3D7;
add.f32 f181, f180, f178;
sub.f32 f182, f178, f180;
mul.f32 f183, f175, 0f3F000000;
sub.f32 f184, f88, f183;
sub.f32 f185, f133, f138;
mul.f32 f186, f185, 0f3F5DB3D7;
sub.f32 f187, f184, f186;
add.f32 f188, f186, f184;
add.f32 f189, %54, %70;
add.f32 f190, %38, f189;
add.f32 f191, %56, %72;
add.f32 f192, %40, f191;
mul.f32 f193, f189, 0f3F000000;
sub.f32 f194, %38, f193;
sub.f32 f195, %56, %72;
mul.f32 f196, f195, 0f3F5DB3D7;
add.f32 f197, f196, f194;
sub.f32 f198, f194, f196;
mul.f32 f199, f191, 0f3F000000;
sub.f32 f200, %40, f199;
sub.f32 f201, %54, %70;
mul.f32 f202, f201, 0f3F5DB3D7;
sub.f32 f203, f200, f202;
add.f32 f204, f202, f200;
add.f32 f205, %60, %76;
add.f32 f206, %44, f205;
add.f32 f207, %61, %77;
add.f32 f208, %45, f207;
mul.f32 f209, f205, 0f3F000000;
sub.f32 f210, %44, f209;
sub.f32 f211, %61, %77;
mul.f32 f212, f211, 0f3F5DB3D7;
add.f32 f213, f212, f210;
sub.f32 f214, f210, f212;
mul.f32 f215, f207, 0f3F000000;
sub.f32 f216, %45, f215;
sub.f32 f217, %60, %76;
mul.f32 f218, f217, 0f3F5DB3D7;
sub.f32 f219, f216, f218;
add.f32 f220, f218, f216;
add.f32 f221, %65, %81;
add.f32 f222, %49, f221;
add.f32 f223, %67, %82;
add.f32 f224, %51, f223;
mul.f32 f225, f221, 0f3F000000;
sub.f32 f226, %49, f225;
sub.f32 f227, %67, %82;
mul.f32 f228, f227, 0f3F5DB3D7;
add.f32 f229, f228, f226;
sub.f32 f230, f226, f228;
mul.f32 f231, f223, 0f3F000000;
sub.f32 f232, %51, f231;
sub.f32 f233, %65, %81;
mul.f32 f234, f233, 0f3F5DB3D7;
sub.f32 f235, f232, f234;
add.f32 f236, f234, f232;
mul.f32 f237, f213, 0f3F441B7D;
mul.f32 f238, f219, 0fBF248DBB;
sub.f32 f239, f237, f238;
mul.f32 f240, f219, 0f3F441B7D;
fma.rn.f32 f241, f213, 0fBF248DBB, f240;
mul.f32 f242, f229, 0f3E31D0D4;
mul.f32 f243, f235, 0fBF7C1C5C;
sub.f32 f244, f242, f243;
mul.f32 f245, f235, 0f3E31D0D4;
fma.rn.f32 f246, f229, 0fBF7C1C5C, f245;
mul.f32 f247, f214, 0f3E31D0D4;
mul.f32 f248, f220, 0fBF7C1C5C;
sub.f32 f249, f247, f248;
mul.f32 f250, f220, 0f3E31D0D4;
fma.rn.f32 f251, f214, 0fBF7C1C5C, f250;
mul.f32 f252, f230, 0fBF708FB2;
mul.f32 f253, f236, 0fBEAF1D44;
sub.f32 f254, f252, f253;
mul.f32 f255, f236, 0fBF708FB2;
fma.rn.f32 f256, f230, 0fBEAF1D44, f255;
add.f32 f257, f206, f222;
add.f32 f258, f190, f257;
add.f32 f259, f208, f224;
add.f32 f260, f192, f259;
mul.f32 f261, f257, 0f3F000000;
sub.f32 f262, f190, f261;
sub.f32 f263, f208, f224;
mul.f32 f264, f263, 0f3F5DB3D7;
add.f32 f265, f264, f262;
sub.f32 f266, f262, f264;
mul.f32 f267, f259, 0f3F000000;
sub.f32 f268, f192, f267;
sub.f32 f269, f206, f222;
mul.f32 f270, f269, 0f3F5DB3D7;
sub.f32 f271, f268, f270;
add.f32 f272, f270, f268;
add.f32 f273, f239, f244;
add.f32 f274, f197, f273;
add.f32 f275, f241, f246;
add.f32 f276, f203, f275;
mul.f32 f277, f273, 0f3F000000;
sub.f32 f278, f197, f277;
sub.f32 f279, f241, f246;
mul.f32 f280, f279, 0f3F5DB3D7;
add.f32 f281, f280, f278;
sub.f32 f282, f278, f280;
mul.f32 f283, f275, 0f3F000000;
sub.f32 f284, f203, f283;
sub.f32 f285, f239, f244;
mul.f32 f286, f285, 0f3F5DB3D7;
sub.f32 f287, f284, f286;
add.f32 f288, f286, f284;
add.f32 f289, f249, f254;
add.f32 f290, f198, f289;
add.f32 f291, f251, f256;
add.f32 f292, f204, f291;
mul.f32 f293, f289, 0f3F000000;
sub.f32 f294, f198, f293;
sub.f32 f295, f251, f256;
mul.f32 f296, f295, 0f3F5DB3D7;
add.f32 f297, f296, f294;
sub.f32 f298, f294, f296;
mul.f32 f299, f291, 0f3F000000;
sub.f32 f300, f204, f299;
sub.f32 f301, f249, f254;
mul.f32 f302, f301, 0f3F5DB3D7;
sub.f32 f303, f300, f302;
add.f32 f304, f302, f300;
mul.f32 f305, f274, 0f3F708FB2;
mul.f32 f306, f276, 0fBEAF1D44;
sub.f32 f307, f305, f306;
mul.f32 f308, f276, 0f3F708FB2;
fma.rn.f32 f309, f274, 0fBEAF1D44, f308;
mul.f32 f310, f290, 0f3F441B7D;
mul.f32 f311, f292, 0fBF248DBB;
sub.f32 f312, f310, f311;
mul.f32 f313, f292, 0f3F441B7D;
fma.rn.f32 f314, f290, 0fBF248DBB, f313;
mul.f32 f315, f265, 0f3F000000;
mul.f32 f316, f271, 0fBF5DB3D7;
sub.f32 f317, f315, f316;
mul.f32 f318, f271, 0f3F000000;
fma.rn.f32 f319, f265, 0fBF5DB3D7, f318;
mul.f32 f320, f281, 0f3E31D0D4;
mul.f32 f321, f287, 0fBF7C1C5C;
sub.f32 f322, f320, f321;
mul.f32 f323, f287, 0f3E31D0D4;
fma.rn.f32 f324, f281, 0fBF7C1C5C, f323;
mul.f32 f325, f297, 0fBE31D0D4;
mul.f32 f326, f303, 0fBF7C1C5C;
sub.f32 f327, f325, f326;
mul.f32 f328, f303, 0fBE31D0D4;
fma.rn.f32 f329, f297, 0fBF7C1C5C, f328;
mul.f32 f330, f266, 0fBF000000;
mul.f32 f331, f272, 0fBF5DB3D7;
sub.f32 f332, f330, f331;
mul.f32 f333, f272, 0fBF000000;
fma.rn.f32 f334, f266, 0fBF5DB3D7, f333;
mul.f32 f335, f282, 0fBF441B7D;
mul.f32 f336, f288, 0fBF248DBB;
sub.f32 f337, f335, f336;
mul.f32 f338, f288, 0fBF441B7D;
fma.rn.f32 f339, f282, 0fBF248DBB, f338;
mul.f32 f340, f298, 0fBF708FB2;
mul.f32 f341, f304, 0fBEAF1D44;
sub.f32 f342, f340, f341;
mul.f32 f343, f304, 0fBF708FB2;
fma.rn.f32 f344, f298, 0fBEAF1D44, f343;
add.f32 %1, f144, f260;
add.f32 %0, f142, f258;
add.f32 %3, f160, f309;
add.f32 %2, f158, f307;
add.f32 %5, f176, f314;
add.f32 %4, f174, f312;
add.f32 %7, f155, f319;
add.f32 %6, f149, f317;
add.f32 %9, f171, f324;
add.f32 %8, f165, f322;
add.f32 %11, f187, f329;
add.f32 %10, f181, f327;
add.f32 %13, f156, f334;
add.f32 %12, f150, f332;
add.f32 %15, f172, f339;
add.f32 %14, f166, f337;
add.f32 %17, f188, f344;
add.f32 %16, f182, f342;
sub.f32 %19, f144, f260;
sub.f32 %18, f142, f258;
sub.f32 %21, f160, f309;
sub.f32 %20, f158, f307;
sub.f32 %23, f176, f314;
sub.f32 %22, f174, f312;
sub.f32 %25, f155, f319;
sub.f32 %24, f149, f317;
sub.f32 %27, f171, f324;
sub.f32 %26, f165, f322;
sub.f32 %29, f187, f329;
sub.f32 %28, f181, f327;
sub.f32 %31, f156, f334;
sub.f32 %30, f150, f332;
sub.f32 %33, f172, f339;
sub.f32 %32, f166, f337;
sub.f32 %35, f188, f344;
sub.f32 %34, f182, f342;
})"
     : "=f"(rmem[0].x), "=f"(rmem[0].y), "=f"(rmem[1].x), "=f"(rmem[1].y), "=f"(rmem[2].x), "=f"(rmem[2].y), "=f"(rmem[3].x), "=f"(rmem[3].y), "=f"(rmem[4].x), "=f"(rmem[4].y), "=f"(rmem[5].x), "=f"(rmem[5].y), "=f"(rmem[6].x), "=f"(rmem[6].y), "=f"(rmem[7].x), "=f"(rmem[7].y), "=f"(rmem[8].x), "=f"(rmem[8].y), "=f"(rmem[9].x), "=f"(rmem[9].y), "=f"(rmem[10].x), "=f"(rmem[10].y), "=f"(rmem[11].x), "=f"(rmem[11].y), "=f"(rmem[12].x), "=f"(rmem[12].y), "=f"(rmem[13].x), "=f"(rmem[13].y), "=f"(rmem[14].x), "=f"(rmem[14].y), "=f"(rmem[15].x), "=f"(rmem[15].y), "=f"(rmem[16].x), "=f"(rmem[16].y), "=f"(rmem[17].x), "=f"(rmem[17].y): "f"(rmem[0].x), "f"(rmem[0].y), "f"(rmem[1].x), "f"(rmem[1].y), "f"(rmem[1].y), "f"(rmem[2].x), "f"(rmem[2].y), "f"(rmem[2].y), "f"(rmem[3].x), "f"(rmem[3].y), "f"(rmem[4].x), "f"(rmem[4].y), "f"(rmem[4].y), "f"(rmem[5].x), "f"(rmem[5].y), "f"(rmem[5].y), "f"(rmem[6].x), "f"(rmem[6].y), "f"(rmem[7].x), "f"(rmem[7].y), "f"(rmem[7].y), "f"(rmem[8].x), "f"(rmem[8].y), "f"(rmem[8].y), "f"(rmem[9].x), "f"(rmem[9].y), "f"(rmem[10].x), "f"(rmem[10].y), "f"(rmem[10].y), "f"(rmem[11].x), "f"(rmem[11].y), "f"(rmem[11].y), "f"(rmem[12].x), "f"(rmem[12].y), "f"(rmem[13].x), "f"(rmem[13].y), "f"(rmem[13].y), "f"(rmem[14].x), "f"(rmem[14].y), "f"(rmem[14].y), "f"(rmem[15].x), "f"(rmem[15].y), "f"(rmem[16].x), "f"(rmem[16].y), "f"(rmem[16].y), "f"(rmem[17].x), "f"(rmem[17].y));
};


#endif
